import UIAbility from '@ohos.app.ability.UIAbility';
import hilog from '@ohos.hilog';
import window from '@ohos.window';


/**
 * 这个文件里面的使用必须使用模拟器或者真机
 * 预览器无法使用
 */

// 创建storage实例
const globalStorage = new LocalStorage({ globalName: '全局流程' })

/**
 * 有点类似于
 * 小程序里面的app.js里的生命周期
 * 一般来这里创建一些全局的东西
 */
export default class EntryAbility extends UIAbility {

  // 放到类里
  storage = globalStorage

  /**
   * UIAbility实例创建完成时触发
   */
  onCreate() {
    console.log('-- page log --','onCreate', '实例创建完成后')

    let eventhub = this.context.eventHub;

    /**
     * 第一个参数事件名
     * 第二个参数事件触发后的回调函数
     */
    eventhub.on('fun1', (msg) => {
      console.log('-- page log --', msg)
    })
  }


  onWindowStageCreate(windowStage: window.WindowStage) {
    console.log('-- page log --', 'onWindowStageCreate', 'UIAbility实例创建完成之后，在进入Foreground之前')

    /**
     * 这里想演示 只能通过模拟器
     */
    // 第一个参数是首页地址，第二个参数注入storage实例
    windowStage.loadContent('pages/day10/LearnEmit', this.storage);

    return
    // 1.创建悬浮窗。
    let
    windowClass = null;

    let config = {
      name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: this.context
    };

    window.createWindow(config, (err, data) => {
      windowClass = data;
      // 2.悬浮窗窗口创建成功后，设置悬浮窗的位置、大小及相关属性等。
      windowClass.moveWindowTo(300, 300, (err) => {
      });
      // 大小
      windowClass.resize(500, 500, (err) => {
      });
      // 3.为悬浮窗加载对应的目标页面。
      windowClass.setUIContent("pages/day10/LearnEmit", (err) => {
        // 3.显示悬浮窗。
        windowClass.showWindow((err) => {
        });
      });
      // 4.销毁悬浮窗。当不再需要悬浮窗时，可根据具体实现逻辑，使用destroy对其进行销毁。
      // windowClass.destroyWindow((err) => {
      //   if (err.code) {
      //     console.error('Failed to destroy the window. Cause: ' + JSON.stringify(err));
      //     return;
      //   }
      //   console.info('Succeeded in destroying the window.');
      // });
    });
  }

  WindowStageDestroy() {
    console.log('-- page log --','WindowStageDestroy', '在窗口实例销毁之前')
  }

  onForeground() {
    console.log('-- page log --','Foreground', '切前台时出发')
  }

  onBackground () {
    console.log('-- page log --','onBackground', '切后台时出发')
  }

  onDestroy() {
    console.log('-- page log --','onDestroy', '销毁出发')
  }
}
